package chapter_24;


// 附加的包


/*
24.1 核心Java API包
java.applet             支持小应用程序的结构
java.awt                提供图形用户接口的能力
java.awt.color          支持颜色空间和外形
java.awt.datatransfer   与系统的剪贴板交换数据
java.awt.dnd            支持拖拉操作
java.awt.event          处理事件
java.awt.font           描述多种字体类型
java.awt.geom           允许你使用几何形状
java.awt.im             允许编辑组件中日文，中文，韩文的输入
java.awt.im.spi         支持二选一的输入设备 (在 Java 2, v1.3中加入)
java.awt.image          处理图像
java.awt.image.renderable 支持独立显示图像
java.awt.print          支持一般的打印功能
java.beans              允许你建立软件组件
java.beans.beancontext  为bean 提供可执行环境
java.io                 输入输出数据
java.lang               提供核心功能
java.lang.ref           使能与垃圾回收交互
java.lang.reflect       运行时分析代码
java.math               处理大整数和十进制数
java.net                支持网络功能
java.rmi                支持远程方法调用
java.rmi.activation     激活永久对象
java.rmi.dgc            管理分布垃圾回收
java.rmi.registry       映射名称到远程对象引用
java.rmi.server         支持远程方法调用
java.security           处理证书，密钥，摘要，签名和其他安全功能
java.security.acl       管理访问控制列表
java.security.cert      分析和管理证书
java.security.interfaces 为DSA（数字签名算法）定义接口
java.security.spec      设定密钥和算法参数
java.sql                与SQL（结构化查询语言）数据库交互
java.text               格式化，查询和处理文本
java.util               包含一般工具
java.util.jar           生成和打开JAR文件
java.util.zip           读写压缩或解压缩文件
 */


/*
24.2 自省
自省是软件分析自己的能力。这个功能由Class类中的java.lang.reflect包和元素所提供。
自省是一个重要的功能，当我们使用被称为Java Beans的组件时将用到它。它允许你在运行
时而不是在编译时分析一个软件组件并且动态的描述它的功能。例如，通过使用自省，你
能决定一个类支持哪些方法、构造函数和成员属性。
包java.lang.reflect有一个叫做Member的接口，在这个接口中定义了那些允许获得类中
域、构造函数或方法信息的方法。在这个包中也有8个类。
AccessibleObject 允许你绕过默认的访问控制检查 (在 Java 2中加入)
Array       允许你动态生成和处理数组
Constructor 提供有关构造函数的信息
Field       提供有关域的信息
Method      提供关于方法的信息
Modifier    提供有关类和成员访问修饰符的信息
Proxy       支持动态代理类 (在 Java 2, v1.3中加入)
ReflectPermission 允许一个类中私有的和被保护的成员思考(在Java 2中加入)
 */


/*
24.3 远程方法调用
 */


/*
24.4 文本的格式化
    24.4.1 DateFormat类
    DateFormat类是一个提供了格式化和解析日期和时间功能的抽象类。getDateInstance( )
    方法可以返回一个DateFormat类的实例，这个对象可以格式化日期信息。这个方法如下所
    示：
    static final DateFormat getDateInstance( )
    static final DateFormat getDateInstance(int style)
    static final DateFormat getDateInstance(int style, Locale locale)
    在这里，参数style是下列值中的一个：DEFAULT, SHORT, MEDIUM, LONG或者
    FULL。这些都是DateFormat类定义的整数常量。它们代表着日期显示的不同方式。参数
    locale是由Locale类(请参考第16章了解更多细节)定义的静态引用之一。如果style或者locale
    没有被指定，将使用默认方式。
    在这个类中最常用的方法是format()。它有几种重载方式，其中的一种如下所示：
    final String format(Date d)
    这个方法的参数是一个将要显示的Date对象。这个方法返回一个包含了格式化信息的
    字符串。

    24.4.2 SimpleDateFormat类
    SimpleDateFormat类是DateFormat类的一个子类，它可以让你定义自己用来显示日期和
    时间信息的格式化模型。
    它的一个构造函数如下所示：
    SimpleDateFormat(String formatString)
    formatString参数描述了如何显示日期和时间信息，使用它的一个例子如下所示：
    SimpleDateFormat sdf = SimpleDateFormat("dd MMM yyyy hh:mm:ss zzz");
    在格式化字符串中使用的格式决定了信息的显示方式。
    a 上午（AM） 或下午（ PM）
    d 一个月中的某天(1–31)
    h 上午或下午的某小时(1–12)
    k 一天中的某小时 (1–24)
    m 一小时里的某分钟 (0–59)
    s 一分钟里的某一秒(0–59)
    w 一年中的某星期 (1–52)
    y 年
    z 时区
    D 一年里的某一天 (1–366)
    E 一星期里的某天(例如, 星期四)
    F 某月的工作日数
    G 纪元(即AD或BC)
    H 一天中的某小时(0~23)
    K 上午或下午的某小时(0~11)
    M 月份
    S 秒中的毫秒
    W 某月中的某个星期 (1–5)
    ' 取消字符
 */

import java.text.*;
import java.util.*;


class DateFormatDemo {
    // 24.4.1
    static void runner() {
        Date date = new Date();
        DateFormat df;
        df = DateFormat.getDateInstance(DateFormat.SHORT, Locale.JAPAN);
        System.out.println("Japan: " + df.format(date));
        df = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.KOREA);
        System.out.println("Korea: " + df.format(date));
        df = DateFormat.getDateInstance(DateFormat.LONG, Locale.UK);
        System.out.println("United Kingdom: " + df.format(date));
        df = DateFormat.getDateInstance(DateFormat.FULL, Locale.US);
        System.out.println("United States: " + df.format(date));
    }
}


public class chapter_24 {

    public static void main(String[] args) {
        DateFormatDemo.runner();
    }
}
